A conventional finite state machine (hereinafter “conventional FSM”) is an abstract machine consisting of a set of states (including the initial state), a set of input events, a set of output events, and a state transition function. The function takes the current state and an input event and returns output events and the next state. Some states may be designated as “terminal states”. A conventional finite state machine can also be viewed as a function which maps an ordered sequence of input events into a corresponding sequence of (sets of) output events. A deterministic conventional FSM is one where the next state is uniquely determined by a single input event. In contrast, the next state of a non-deterministic conventional FSM depends not only on the current input event but also on an arbitrary number of subsequent input events. Until such subsequent events occur, therefore, it is not possible to determine the next state.